using System;
using System.Text;

using Curriculum.Business.LectorMetadatos;
using Curriculum.Business.Manejadores;

namespace Curriculum.Business.ClasesPersistentes
{
	/// <summary>
	/// Summary description for ValidadorVersion.
	/// </summary>
	public class ValidadorVersion
	{
		public ValidadorVersion()
		{}

		public static bool ValidarAtributosObligatorios(VersionCurriculo versionCV, StringBuilder sb)
		{
			foreach (AntecedentePersistente antecedentePersistente in versionCV.AntecedentesPersistentes)
			{
				ValidarAtributosObligatorios(antecedentePersistente, antecedentePersistente.IdAntecedente, sb);
			}
			
			return (sb.ToString() == string.Empty);
		}

		public static void ValidarAtributosObligatorios(AntecedentePersistente antecedentePersistente, string idAntecedenteRaiz, StringBuilder sb)
		{
			MasterData mData = MasterData.GetInstancia();
			ManejadorAntecedentes mAntecedentes = ManejadorAntecedentes.GetInstancia();

			if (antecedentePersistente.TieneAtributosPersistentes())
			{
				foreach (AtributoPersistente attPersistente in antecedentePersistente.AtributosPersistentes)
				{
					if ((attPersistente.Valor == string.Empty) && (mData.EsAtributoObligatorio(attPersistente.IdAtributo)) )
					{
						sb.Append("falta el valor de '"+ mData.GetAtributo(attPersistente.IdAtributo).nombre
							+ "' en un '" + mAntecedentes.GetAntecedente(idAntecedenteRaiz).Nombre 
							+ "' - '" + mAntecedentes.GetAntecedente(antecedentePersistente.IdAntecedente).Nombre +"' \r\n");
					}
				}
			}
			if (antecedentePersistente.TieneAntecedentesPersistentes())
			{
				foreach (AntecedentePersistente antPersistenteHijo in antecedentePersistente.AntecedentesPersistentes)
				{
					ValidarAtributosObligatorios(antPersistenteHijo, idAntecedenteRaiz, sb);
				}
			}
		}
	}
}
